/**
 *  一句话思路：最左➕最右<=w，不就行了，不然最右边自动成堆
    算法描述：双指针、贪心
    解决所需数据结构+算法：NULL
**/
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

int main() {
    int w, n, a[30010];
    memset(a, 0, sizeof(a));
    cin >> w >> n;
    for(int i=0; i<n; i++)  cin >> a[i];
    sort(a, a+n);

    int l=0, r=n-1, ans = 0;
    while(l<=r) {
        if(a[l] + a[r] <= w)
            l++, r--, ans++;
        else    r--, ans++;
    }
    cout << ans << endl;
    
    return 0;
}
